home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Main.bin / selftest.h < prev    next >
C/C++ Source or Header  |  1998-09-15  |  25KB  |  537 lines

  1. /*
  2.  * @(#)selftest.h    1.6 98/01/12
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. #ifndef    _SELFTEST_H_
  21. #define    _SELFTEST_H_
  22.  
  23. /*     Structures and typedefs in support of the Java runtime self-test. */
  24.  
  25. enum binop_operations
  26. {
  27.       BINOP_ADD,
  28.       BINOP_SUB,
  29.       BINOP_MUL,
  30.       BINOP_DIV,
  31.       BINOP_REM,
  32.       BINOP_AND,
  33.       BINOP_OR,
  34.       BINOP_XOR
  35. };
  36.  
  37. enum unop_operations
  38. {
  39.       UNOP_NEG,
  40.       UNOP_SHL,
  41.       UNOP_ASHR,     /* arithmetic shift right (with sign-extension) */
  42.       UNOP_LSHR     /* logical shift right (no sign-extension) */
  43. };
  44.  
  45. enum cmp_operations
  46. {
  47.       CMP_EQ,
  48.     CMP_LT,
  49.     CMP_LE,
  50.     CMP_NE,
  51.     CMP_GT,
  52.     CMP_GE,
  53.     CMP_NULL,
  54.     CMP_NONNULL
  55. };
  56.  
  57. enum init_status
  58. {
  59.      INIT_OK,        
  60.     INIT_UNIMP,        /* initializer is not written yet */
  61.     INIT_ERROR     /* an error occurred during initialization */
  62. };
  63.  
  64. enum check_status
  65. {
  66.     CHECK_PASS,        /* test passed */
  67.     CHECK_FAIL,        /* test failed */
  68.     CHECK_UNIMP,    /* test is not written yet */
  69.     CHECK_ERROR    /* an error occurred during checking */
  70. };
  71.  
  72. enum word_order
  73. {
  74.     little,            /* loword first, then hiword */
  75.     big            /* hiword first, then loword */
  76. };
  77.  
  78. enum types
  79. {
  80.     TYPE_BOOLEAN = 4,     /* The number 4 is from VM Spec, 3.6 */
  81.     TYPE_CHAR,
  82.     TYPE_FLOAT,
  83.     TYPE_DOUBLE,
  84.     TYPE_BYTE,
  85.     TYPE_SHORT,
  86.     TYPE_INT,
  87.     TYPE_LONG,
  88.     TYPE_OBJECT,    /* dummy type I made up for testing convenience */
  89.     TYPE_NUMTYPES    /* keep me last */
  90. };
  91.  
  92. /*     Field names correspond to the names given to fields in SelfTest.java.
  93.     If you change names or add new fields in SelfTest.java be sure to
  94.     reflect the changes here. */
  95. enum fields
  96. {
  97.     field_i1,        /* local integer field */
  98.     field_i2,        
  99.     field_f1,        /* local float field */
  100.     field_f2,        
  101.     field_d1,        /* local double field */
  102.     field_d2,
  103.     field_l1,        /* local longlong field */
  104.     field_l2,        
  105.     field_si1,        /* static integer field */
  106.     field_si2,        
  107.     field_sf1,        /* static float field */
  108.     field_sf2,        
  109.     field_sd1,        /* static double field */
  110.     field_sd2,        
  111.     field_sl1,        /* static float field */
  112.     field_sl2,    
  113.     method_set_i1,
  114.     method_set_i2,
  115.     method_set_f1,
  116.     method_set_f2,
  117.     method_set_d1,
  118.     method_set_d2,
  119.     method_set_l1,
  120.     method_set_l2,
  121.     method_set_si1,
  122.     method_set_si2,
  123.     method_set_sf1,
  124.     method_set_sf2,
  125.     method_set_sd1,
  126.     method_set_sd2,
  127.     method_set_sl1,
  128.     method_set_sl2,
  129.     method_test_areturn,
  130.     method_test_athrow1,
  131.     method_test_athrow2,
  132.     method_test_athrow3,
  133.     method_test_athrow4,
  134.     method_test_an_interface,
  135.     method_equals,
  136.     FIELD_NUMFIELDS 
  137. };
  138.  
  139. /* The structure that defines a single self-test. */
  140. struct opcode_test
  141. {
  142.     /* The Java opcode */
  143.     unsigned char opcode;
  144.  
  145.     /* A pointer to a function to initialize the PC and ExecEnv for the test */
  146.     int (* initer) (unsigned char **, ExecEnv *, int, int);
  147.  
  148.     /* A pointer to a function to check the stack after executing the opcode */
  149.     int (* checker) (unsigned char *, ExecEnv *, int, int);
  150.  
  151.     /* Optional parameter for polymorphic initer/checkers like iload */
  152.     int param;
  153.  
  154.     /* Optional parameter for wide/notwide opcodes like goto */
  155.     int wide;
  156. };
  157.  
  158. /*     A simple structure to store some info that describes test objects.
  159.  
  160.     The order of the elements in the objcheck[] array follows the order
  161.     of "enum fields", e.g. objcheck[method_set_si1] will contain 
  162.     info about the method "set_s1".
  163.         
  164.     The objcheck[] array is initialized in SetupTstObjects. */
  165. struct objcheck
  166. {
  167.     /*     Pointer to fieldblock within class's fields[] array */
  168.     struct fieldblock *fb;
  169.  
  170.     /*     For methods, pointer to methodblock within class's methods[] array */
  171.     struct methodblock *mb;
  172.  
  173.     /* Index of this field within constant pool */
  174.     int cpindex;
  175. };
  176.  
  177. #define fieldblock(field)    objcheck[field].fb
  178. #define methodblock(field)    objcheck[field].mb
  179. #define methodoffset(field) objcheck[field].fb->u.offset
  180. #define objoffset(field)     (objcheck[field].fb->u.offset / sizeof(long))
  181. #define staticvalue(field)    objcheck[field].fb->u.static_value
  182. #define staticaddr(field)    objcheck[field].fb->u.static_address
  183. #define fldname(field)        objcheck[field].fb->name
  184. #define cpindex(field)        objcheck[field].cpindex
  185.  
  186. /*     A simple structure to store the object created to represent an array
  187.     and its expected size.
  188.  
  189.     The order of the elements in the arraycheck[] array follows the order
  190.     of "enum types", e.g. arraycheck[TYPE_FLOAT] will contain an object
  191.     that is expected to describe an array of float.
  192.         
  193.     The arraycheck[] array is initialized in newarray_check1. Used by 
  194.     newarray_check1, plus the complete set of array_load and array_store 
  195.     tests. */
  196. struct arraycheck
  197. {
  198.     /*     Reference to the allocated object */
  199.     JHandle *handle;
  200.  
  201.     /*     Number of elements in the array */
  202.     int numelem;
  203. };
  204.  
  205. /*    A structure and two functions to aid in checking 64-bit
  206.     arithmetic and conversions. */
  207. struct longlong
  208. {
  209.     long msw;
  210.     long lsw;
  211. };
  212.  
  213. /*     As initialized in SetupExecEnv, the currently executing frame can 
  214.     count on there being NUMLOCALS locals in the previous frame. */
  215. #define NUMLOCALS 16
  216.  
  217. /*     The size of the program text buffer passed to ExecuteJava. */
  218. #define PROGTEXT_SIZE 128
  219.  
  220. /*     Define some constants for convenience in the testing that follows */
  221. #define MAGIC_BYTE        123
  222. #define MAGIC_SHORT        1234
  223. #define    MAGIC_WORD        1234567
  224. #define MAGIC_FLOAT        1.2e34
  225. #define MAGIC_DOUBLE    1.2e234
  226. #define MAGIC_OBJECT    tst_object
  227. #define FLOAT_ERROR        1.0e-3
  228. #define DOUBLE_ERROR    1.0e-6
  229.  
  230. /*     A list of opcode names, for printing in error messages;
  231.     defined in opcodes.c in the build directory */
  232. extern char * const opnames[];
  233.  
  234. /*    Test an expression and print a message if FALSE. 
  235.     NOTE: opcode names in the failure message will only be correct if the
  236.     opcode appears as the first character of pc[] (the usual case, but
  237.     not required.) */
  238. #define CHECK(expr) ((expr) ? CHECK_PASS : (fprintf(stderr, "Self-Test %d FAILED, opcode: %s, file: %s, line: %d\n", testno, opnames[selftest_table[testno].opcode], __FILE__, __LINE__) , CHECK_FAIL))
  239.  
  240. /*    Compare two doubles without using == */
  241. #define DEQUALS(d1, d2) (fabs(1.0 - (d1) / (d2)) < DOUBLE_ERROR)
  242.  
  243. /*    Compare two floats without using == */
  244. #define FEQUALS(f1, f2) (fabs(1.0 - (f1) / (f2)) < FLOAT_ERROR)
  245.  
  246. /*     For debugging the self-test; "verbose" variable comes from -v 
  247.     command-line option; define DEBUG_SELFTEST in the Makefile to 
  248.     always print a results summary even without -v. */
  249. #if defined(DEBUG_SELFTEST)
  250. #define PRINT_RESULTS_SUMMARY 1
  251. #else
  252. #define PRINT_RESULTS_SUMMARY verbose
  253. #endif
  254.  
  255. /*     A few miscellaneous prototypes used by the selftest */
  256. static void    SetupExecEnv (ExecEnv *ee);
  257. static void    SetupTstObjects (ExecEnv *ee);
  258. static void SetupWordOrder (unsigned char *pc, ExecEnv *ee);
  259. static void ReportSelfTestResults (int numtests, int numpasses, int numfails);
  260. static cp_item_type *copy_constantpool (cp_item_type *src, int itemcount);
  261. static void free_constantpool (cp_item_type *cp);
  262. static struct longlong get_longlong (char *buf);
  263. static void put_longlong (struct longlong ll, char *buf);
  264. static void push_int (unsigned long ul, unsigned char **pc, ExecEnv *ee);
  265. static void push_float (float f, unsigned char **pc, ExecEnv *ee);
  266. static void push_double (double d, unsigned char **pc, ExecEnv *ee);
  267. static void push_long (struct longlong ll, unsigned char **pc, ExecEnv *ee);
  268.  
  269. #if defined(DEBUG_SELFTEST)
  270. static void dump_constantpool (char *filename, cp_item_type *cp, int intemcount);
  271. #endif
  272.  
  273. /* The laundry list of initializers and checkers. */
  274. static int nop_init1 (unsigned char **, ExecEnv *, int, int);
  275. static int nop_check1 (unsigned char *, ExecEnv *, int, int);
  276. static int iconst_init1 (unsigned char **, ExecEnv *, int, int);
  277. static int iconst_check1 (unsigned char *, ExecEnv *, int, int);
  278. static int lconst_init1 (unsigned char **, ExecEnv *, int, int);
  279. static int lconst_check1 (unsigned char *, ExecEnv *, int, int);
  280. static int fconst_init1 (unsigned char **, ExecEnv *, int, int);
  281. static int fconst_check1 (unsigned char *, ExecEnv *, int, int);
  282. static int dconst_init1 (unsigned char **, ExecEnv *, int, int);
  283. static int dconst_check1 (unsigned char *, ExecEnv *, int, int);
  284. static int bipush_init1 (unsigned char **, ExecEnv *, int, int);
  285. static int bipush_check1 (unsigned char *, ExecEnv *, int, int);
  286. static int bipush_init2 (unsigned char **, ExecEnv *, int, int);
  287. static int bipush_check2 (unsigned char *, ExecEnv *, int, int);
  288. static int bipush_init3 (unsigned char **, ExecEnv *, int, int);
  289. static int bipush_check3 (unsigned char *, ExecEnv *, int, int);
  290. static int sipush_init1 (unsigned char **, ExecEnv *, int, int);
  291. static int sipush_check1 (unsigned char *, ExecEnv *, int, int);
  292. static int sipush_init2 (unsigned char **, ExecEnv *, int, int);
  293. static int sipush_check2 (unsigned char *, ExecEnv *, int, int);
  294. static int sipush_init3 (unsigned char **, ExecEnv *, int, int);
  295. static int sipush_check3 (unsigned char *, ExecEnv *, int, int);
  296. static int ldc_init1 (unsigned char **, ExecEnv *, int, int);
  297. static int ldc_check1 (unsigned char *, ExecEnv *, int, int);
  298. static int ldc2_init1 (unsigned char **, ExecEnv *, int, int);
  299. static int ldc2_check1 (unsigned char *, ExecEnv *, int, int);
  300. static int iload_init1 (unsigned char **, ExecEnv *, int, int);
  301. static int iload_check1 (unsigned char *, ExecEnv *, int, int);
  302. static int aload_init1 (unsigned char **, ExecEnv *, int, int);
  303. static int aload_check1 (unsigned char *, ExecEnv *, int, int);
  304. static int lload_init1 (unsigned char **, ExecEnv *, int, int);
  305. static int lload_check1 (unsigned char *, ExecEnv *, int, int);
  306. static int fload_init1 (unsigned char **, ExecEnv *, int, int);
  307. static int fload_check1 (unsigned char *, ExecEnv *, int, int);
  308. static int dload_init1 (unsigned char **, ExecEnv *, int, int);
  309. static int dload_check1 (unsigned char *, ExecEnv *, int, int);
  310. static int array_load_init1 (unsigned char **, ExecEnv *, int, int);
  311. static int array_load_check1 (unsigned char *, ExecEnv *, int, int);
  312. static int istore_init1 (unsigned char **, ExecEnv *, int, int);
  313. static int istore_check1 (unsigned char *, ExecEnv *, int, int);
  314. static int astore_init1 (unsigned char **, ExecEnv *, int, int);
  315. static int astore_check1 (unsigned char *, ExecEnv *, int, int);
  316. static int lstore_init1 (unsigned char **, ExecEnv *, int, int);
  317. static int lstore_check1 (unsigned char *, ExecEnv *, int, int);
  318. static int fstore_init1 (unsigned char **, ExecEnv *, int, int);
  319. static int fstore_check1 (unsigned char *, ExecEnv *, int, int);
  320. static int dstore_init1 (unsigned char **, ExecEnv *, int, int);
  321. static int dstore_check1 (unsigned char *, ExecEnv *, int, int);
  322. static int array_store_init1 (unsigned char **, ExecEnv *, int, int);
  323. static int array_store_check1 (unsigned char *, ExecEnv *, int, int);
  324. static int pop_init1 (unsigned char **, ExecEnv *, int, int);
  325. static int pop_check1 (unsigned char *, ExecEnv *, int, int);
  326. static int pop2_init1 (unsigned char **, ExecEnv *, int, int);
  327. static int pop2_check1 (unsigned char *, ExecEnv *, int, int);
  328. static int dup_init1 (unsigned char **, ExecEnv *, int, int);
  329. static int dup_check1 (unsigned char *, ExecEnv *, int, int);
  330. static int dup_x1_init1 (unsigned char **, ExecEnv *, int, int);
  331. static int dup_x1_check1 (unsigned char *, ExecEnv *, int, int);
  332. static int dup_x2_init1 (unsigned char **, ExecEnv *, int, int);
  333. static int dup_x2_check1 (unsigned char *, ExecEnv *, int, int);
  334. static int dup2_init1 (unsigned char **, ExecEnv *, int, int);
  335. static int dup2_check1 (unsigned char *, ExecEnv *, int, int);
  336. static int dup2_x1_init1 (unsigned char **, ExecEnv *, int, int);
  337. static int dup2_x1_check1 (unsigned char *, ExecEnv *, int, int);
  338. static int dup2_x2_init1 (unsigned char **, ExecEnv *, int, int);
  339. static int dup2_x2_check1 (unsigned char *, ExecEnv *, int, int);
  340. static int swap_init1 (unsigned char **, ExecEnv *, int, int);
  341. static int swap_check1 (unsigned char *, ExecEnv *, int, int);
  342. static int ibinop_init1 (unsigned char **, ExecEnv *, int, int);
  343. static int ibinop_check1 (unsigned char *, ExecEnv *, int, int);
  344. static int lbinop_init1 (unsigned char **, ExecEnv *, int, int);
  345. static int lbinop_check1 (unsigned char *, ExecEnv *, int, int);
  346. static int fbinop_init1 (unsigned char **, ExecEnv *, int, int);
  347. static int fbinop_check1 (unsigned char *, ExecEnv *, int, int);
  348. static int dbinop_init1 (unsigned char **, ExecEnv *, int, int);
  349. static int dbinop_check1 (unsigned char *, ExecEnv *, int, int);
  350. static int iunop_init1 (unsigned char **, ExecEnv *, int, int);
  351. static int iunop_check1 (unsigned char *, ExecEnv *, int, int);
  352. static int lunop_init1 (unsigned char **, ExecEnv *, int, int);
  353. static int lunop_check1 (unsigned char *, ExecEnv *, int, int);
  354. static int funop_init1 (unsigned char **, ExecEnv *, int, int);
  355. static int funop_check1 (unsigned char *, ExecEnv *, int, int);
  356. static int dunop_init1 (unsigned char **, ExecEnv *, int, int);
  357. static int dunop_check1 (unsigned char *, ExecEnv *, int, int);
  358. static int iinc_init1 (unsigned char **, ExecEnv *, int, int);
  359. static int iinc_check1 (unsigned char *, ExecEnv *, int, int);
  360. static int i2l_init1 (unsigned char **, ExecEnv *, int, int);
  361. static int i2l_check1 (unsigned char *, ExecEnv *, int, int);
  362. static int i2f_init1 (unsigned char **, ExecEnv *, int, int);
  363. static int i2f_check1 (unsigned char *, ExecEnv *, int, int);
  364. static int i2d_init1 (unsigned char **, ExecEnv *, int, int);
  365. static int i2d_check1 (unsigned char *, ExecEnv *, int, int);
  366. static int l2i_init1 (unsigned char **, ExecEnv *, int, int);
  367. static int l2i_check1 (unsigned char *, ExecEnv *, int, int);
  368. static int l2f_init1 (unsigned char **, ExecEnv *, int, int);
  369. static int l2f_check1 (unsigned char *, ExecEnv *, int, int);
  370. static int l2d_init1 (unsigned char **, ExecEnv *, int, int);
  371. static int l2d_check1 (unsigned char *, ExecEnv *, int, int);
  372. static int f2i_init1 (unsigned char **, ExecEnv *, int, int);
  373. static int f2i_check1 (unsigned char *, ExecEnv *, int, int);
  374. static int f2l_init1 (unsigned char **, ExecEnv *, int, int);
  375. static int f2l_check1 (unsigned char *, ExecEnv *, int, int);
  376. static int f2d_init1 (unsigned char **, ExecEnv *, int, int);
  377. static int f2d_check1 (unsigned char *, ExecEnv *, int, int);
  378. static int d2i_init1 (unsigned char **, ExecEnv *, int, int);
  379. static int d2i_check1 (unsigned char *, ExecEnv *, int, int);
  380. static int d2l_init1 (unsigned char **, ExecEnv *, int, int);
  381. static int d2l_check1 (unsigned char *, ExecEnv *, int, int);
  382. static int d2f_init1 (unsigned char **, ExecEnv *, int, int);
  383. static int d2f_check1 (unsigned char *, ExecEnv *, int, int);
  384. static int i2b_init1 (unsigned char **, ExecEnv *, int, int);
  385. static int i2b_check1 (unsigned char *, ExecEnv *, int, int);
  386. static int i2b_init2 (unsigned char **, ExecEnv *, int, int);
  387. static int i2b_check2 (unsigned char *, ExecEnv *, int, int);
  388. static int i2c_init1 (unsigned char **, ExecEnv *, int, int);
  389. static int i2c_check1 (unsigned char *, ExecEnv *, int, int);
  390. static int i2c_init2 (unsigned char **, ExecEnv *, int, int);
  391. static int i2c_check2 (unsigned char *, ExecEnv *, int, int);
  392. static int i2s_init1 (unsigned char **, ExecEnv *, int, int);
  393. static int i2s_check1 (unsigned char *, ExecEnv *, int, int);
  394. static int i2s_init2 (unsigned char **, ExecEnv *, int, int);
  395. static int i2s_check2 (unsigned char *, ExecEnv *, int, int);
  396. static int lcmp_init1 (unsigned char **, ExecEnv *, int, int);
  397. static int lcmp_init2 (unsigned char **, ExecEnv *, int, int);
  398. static int lcmp_check1 (unsigned char *, ExecEnv *, int, int);
  399. static int fcmp_init1 (unsigned char **, ExecEnv *, int, int);
  400. static int dcmp_init1 (unsigned char **, ExecEnv *, int, int);
  401. static int if_init1 (unsigned char **, ExecEnv *, int, int);
  402. static int if_check1 (unsigned char *, ExecEnv *, int, int);
  403. static int if_init2 (unsigned char **, ExecEnv *, int, int);
  404. static int if_check2 (unsigned char *, ExecEnv *, int, int);
  405. static int if_init3 (unsigned char **, ExecEnv *, int, int);
  406. static int if_check3 (unsigned char *, ExecEnv *, int, int);
  407. static int if_icmp_init1 (unsigned char **, ExecEnv *, int, int);
  408. static int if_icmp_check1 (unsigned char *, ExecEnv *, int, int);
  409. static int if_icmp_init2 (unsigned char **, ExecEnv *, int, int);
  410. static int if_icmp_check2 (unsigned char *, ExecEnv *, int, int);
  411. static int if_icmp_init3 (unsigned char **, ExecEnv *, int, int);
  412. static int if_icmp_check3 (unsigned char *, ExecEnv *, int, int);
  413. static int goto_init1 (unsigned char **, ExecEnv *, int, int);
  414. static int goto_check1 (unsigned char *, ExecEnv *, int, int);
  415. static int goto_init2 (unsigned char **, ExecEnv *, int, int);
  416. static int goto_check2 (unsigned char *, ExecEnv *, int, int);
  417. static int jsr_init1 (unsigned char **, ExecEnv *, int, int);
  418. static int jsr_check1 (unsigned char *, ExecEnv *, int, int);
  419. static int jsr_init2 (unsigned char **, ExecEnv *, int, int);
  420. static int jsr_check2 (unsigned char *, ExecEnv *, int, int);
  421. static int ret_init1 (unsigned char **, ExecEnv *, int, int);
  422. static int ret_check1 (unsigned char *, ExecEnv *, int, int);
  423. static int ret_init2 (unsigned char **, ExecEnv *, int, int);
  424. static int ret_check2 (unsigned char *, ExecEnv *, int, int);
  425. static int tableswitch_init1 (unsigned char **, ExecEnv *, int, int);
  426. static int tableswitch_check1 (unsigned char *, ExecEnv *, int, int);
  427. static int lookupswitch_init1 (unsigned char **, ExecEnv *, int, int);
  428. static int lookupswitch_check1 (unsigned char *, ExecEnv *, int, int);
  429. static int ireturn_init1 (unsigned char **, ExecEnv *, int, int);
  430. static int ireturn_check1 (unsigned char *, ExecEnv *, int, int);
  431. static int lreturn_init1 (unsigned char **, ExecEnv *, int, int);
  432. static int lreturn_check1 (unsigned char *, ExecEnv *, int, int);
  433. static int freturn_init1 (unsigned char **, ExecEnv *, int, int);
  434. static int freturn_check1 (unsigned char *, ExecEnv *, int, int);
  435. static int dreturn_init1 (unsigned char **, ExecEnv *, int, int);
  436. static int dreturn_check1 (unsigned char *, ExecEnv *, int, int);
  437. static int areturn_init1 (unsigned char **, ExecEnv *, int, int);
  438. static int areturn_check1 (unsigned char *, ExecEnv *, int, int);
  439. static int return_init1 (unsigned char **, ExecEnv *, int, int);
  440. static int return_check1 (unsigned char *, ExecEnv *, int, int);
  441. static int getstatic_init1 (unsigned char **, ExecEnv *, int, int);
  442. static int getstatic_check1 (unsigned char *, ExecEnv *, int, int);
  443. static int putstatic_init1 (unsigned char **, ExecEnv *, int, int);
  444. static int putstatic_check1 (unsigned char *, ExecEnv *, int, int);
  445. static int getfield_init1 (unsigned char **, ExecEnv *, int, int);
  446. static int getfield_check1 (unsigned char *, ExecEnv *, int, int);
  447. static int putfield_init1 (unsigned char **, ExecEnv *, int, int);
  448. static int putfield_check1 (unsigned char *, ExecEnv *, int, int);
  449. static int getstatic_init2 (unsigned char **, ExecEnv *, int, int);
  450. static int getstatic_check2 (unsigned char *, ExecEnv *, int, int);
  451. static int putstatic_init2 (unsigned char **, ExecEnv *, int, int);
  452. static int putstatic_check2 (unsigned char *, ExecEnv *, int, int);
  453. static int getfield_init2 (unsigned char **, ExecEnv *, int, int);
  454. static int getfield_check2 (unsigned char *, ExecEnv *, int, int);
  455. static int putfield_init2 (unsigned char **, ExecEnv *, int, int);
  456. static int putfield_check2 (unsigned char *, ExecEnv *, int, int);
  457. static int invokevirtual_init1 (unsigned char **, ExecEnv *, int, int);
  458. static int invokevirtual_check1 (unsigned char *, ExecEnv *, int, int);
  459. static int invokespecial_init1 (unsigned char **, ExecEnv *, int, int);
  460. static int invokespecial_check1 (unsigned char *, ExecEnv *, int, int);
  461. static int invokestatic_init1 (unsigned char **, ExecEnv *, int, int);
  462. static int invokestatic_check1 (unsigned char *, ExecEnv *, int, int);
  463. static int invokeinterface_init1 (unsigned char **, ExecEnv *, int, int);
  464. static int invokeinterface_check1 (unsigned char *, ExecEnv *, int, int);
  465. static int new_init1 (unsigned char **, ExecEnv *, int, int);
  466. static int new_check1 (unsigned char *, ExecEnv *, int, int);
  467. static int newarray_init1 (unsigned char **, ExecEnv *, int, int);
  468. static int newarray_check1 (unsigned char *, ExecEnv *, int, int);
  469. static int arraylength_init1 (unsigned char **, ExecEnv *, int, int);
  470. static int arraylength_check1 (unsigned char *, ExecEnv *, int, int);
  471. static int athrow_init1 (unsigned char **, ExecEnv *, int, int);
  472. static int athrow_init2 (unsigned char **, ExecEnv *, int, int);
  473. static int athrow_init3 (unsigned char **, ExecEnv *, int, int);
  474. static int athrow_init4 (unsigned char **, ExecEnv *, int, int);
  475. static int athrow_check1 (unsigned char *, ExecEnv *, int, int);
  476. static int athrow_check2 (unsigned char *, ExecEnv *, int, int);
  477. static int athrow_check3 (unsigned char *, ExecEnv *, int, int);
  478. static int athrow_check4 (unsigned char *, ExecEnv *, int, int);
  479. static int checkcast_init1 (unsigned char **, ExecEnv *, int, int);
  480. static int checkcast_check1 (unsigned char *, ExecEnv *, int, int);
  481. static int instanceof_init1 (unsigned char **, ExecEnv *, int, int);
  482. static int instanceof_check1 (unsigned char *, ExecEnv *, int, int);
  483. static int monitorenter_init1 (unsigned char **, ExecEnv *, int, int);
  484. static int monitorenter_check1 (unsigned char *, ExecEnv *, int, int);
  485. static int monitorexit_init1 (unsigned char **, ExecEnv *, int, int);
  486. static int monitorexit_check1 (unsigned char *, ExecEnv *, int, int);
  487. static int wide_init1 (unsigned char **, ExecEnv *, int, int);
  488. static int wide_check1 (unsigned char *, ExecEnv *, int, int);
  489. static int multianewarray_init1 (unsigned char **, ExecEnv *, int, int);
  490. static int multianewarray_check1 (unsigned char *, ExecEnv *, int, int);
  491. static int breakpoint_init1 (unsigned char **, ExecEnv *, int, int);
  492. static int breakpoint_check1 (unsigned char *, ExecEnv *, int, int);
  493. static int ldc_quick_init1 (unsigned char **, ExecEnv *, int, int);
  494. static int ldc_quick_check1 (unsigned char *, ExecEnv *, int, int);
  495. static int ldc2_quick_init1 (unsigned char **, ExecEnv *, int, int);
  496. static int ldc2_quick_check1 (unsigned char *, ExecEnv *, int, int);
  497. static int getfield_quick_init1 (unsigned char **, ExecEnv *, int, int);
  498. static int getfield_quick_check1 (unsigned char *, ExecEnv *, int, int);
  499. static int putfield_quick_init1 (unsigned char **, ExecEnv *, int, int);
  500. static int putfield_quick_check1 (unsigned char *, ExecEnv *, int, int);
  501. static int getstatic_quick_init1 (unsigned char **, ExecEnv *, int, int);
  502. static int getstatic_quick_check1 (unsigned char *, ExecEnv *, int, int);
  503. static int putstatic_quick_init1 (unsigned char **, ExecEnv *, int, int);
  504. static int putstatic_quick_check1 (unsigned char *, ExecEnv *, int, int);
  505. static int getfield_quick_init2 (unsigned char **, ExecEnv *, int, int);
  506. static int getfield_quick_check2 (unsigned char *, ExecEnv *, int, int);
  507. static int putfield_quick_init2 (unsigned char **, ExecEnv *, int, int);
  508. static int putfield_quick_check2 (unsigned char *, ExecEnv *, int, int);
  509. static int getstatic_quick_init2 (unsigned char **, ExecEnv *, int, int);
  510. static int getstatic_quick_check2 (unsigned char *, ExecEnv *, int, int);
  511. static int putstatic_quick_init2 (unsigned char **, ExecEnv *, int, int);
  512. static int putstatic_quick_check2 (unsigned char *, ExecEnv *, int, int);
  513. static int invokevirtual_quick_init1 (unsigned char **, ExecEnv *, int, int);
  514. static int invokevirtual_quick_check1 (unsigned char *, ExecEnv *, int, int);
  515. static int invokenonvirtual_quick_init1 (unsigned char **, ExecEnv *, int, int);
  516. static int invokenonvirtual_quick_check1 (unsigned char *, ExecEnv *, int, int);
  517. static int invokestatic_quick_init1 (unsigned char **, ExecEnv *, int, int);
  518. static int invokestatic_quick_check1 (unsigned char *, ExecEnv *, int, int);
  519. static int invokeinterface_quick_init1 (unsigned char **, ExecEnv *, int, int);
  520. static int invokeinterface_quick_check1 (unsigned char *, ExecEnv *, int, int);
  521. static int invokeinterface_quick_init2 (unsigned char **, ExecEnv *, int, int);
  522. static int invokeinterface_quick_check2 (unsigned char *, ExecEnv *, int, int);
  523. static int invokevirtualobject_quick_init1 (unsigned char **, ExecEnv *, int, int);
  524. static int invokevirtualobject_quick_check1 (unsigned char *, ExecEnv *, int, int);
  525. static int new_quick_init1 (unsigned char **, ExecEnv *, int, int);
  526. static int new_quick_check1 (unsigned char *, ExecEnv *, int, int);
  527. static int anewarray_quick_init1 (unsigned char **, ExecEnv *, int, int);
  528. static int anewarray_quick_check1 (unsigned char *, ExecEnv *, int, int);
  529. static int multianewarray_quick_init1 (unsigned char **, ExecEnv *, int, int);
  530. static int multianewarray_quick_check1 (unsigned char *, ExecEnv *, int, int);
  531. static int checkcast_quick_init1 (unsigned char **, ExecEnv *, int, int);
  532. static int checkcast_quick_check1 (unsigned char *, ExecEnv *, int, int);
  533. static int instanceof_quick_init1 (unsigned char **, ExecEnv *, int, int);
  534. static int instanceof_quick_check1 (unsigned char *, ExecEnv *, int, int);
  535.  
  536. #endif /* _SELFTEST_H_ */
  537.